package com.dfs.web3j;

import java.lang.Override;
import java.lang.String;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Future;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.EventValues;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Int256;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameterName;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import rx.Observable;
import rx.functions.Func1;

/**
 * <p>Auto generated code.<br>
 * <strong>Do not modify!</strong><br>
 * Please use {@link org.web3j.codegen.SolidityFunctionWrapperGenerator} to update.
 *
 * <p>Generated with web3j version 2.0.1.
 */
public final class FileServerManager extends Contract {
    private static final String BINARY = "60606040526000600155341561001157fe5b5b5b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b6167c680620000676000396000f30060606040523615610126576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063180db1b4146101285780631bd951551461014e57806324b508a3146101bc578063276e64721461029d5780632ced7cef1461030f578063319af333146104035780633ca6268e146104905780633d7403a3146105075780633ffbd47f1461057957806341304fac1461061657806341c0e1b5146106845780634b5c4277146106965780635e01eb5a1461074757806378a9eeed146107e057806382b7b50014610879578063893d20e81461095a578063a0d578f4146109f3578063a87d942c14610a61578063b1498e2914610a87578063b2a840c014610af9578063b60e72cc14610b74578063ca0941b414610beb575bfe5b341561013057fe5b610138610cd5565b6040518082815260200191505060405180910390f35b341561015657fe5b6101a6600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610ce0565b6040518082815260200191505060405180910390f35b34156101c457fe5b610214600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610dba565b6040518080602001828103825283818151815260200191508051906020019080838360008314610263575b8051825260208311156102635760208201915060208101905060208303925061023f565b505050905090810190601f16801561028f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102a557fe5b6102f5600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611218565b604051808215151515815260200191505060405180910390f35b341561031757fe5b6103ed600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506116d8565b6040518082815260200191505060405180910390f35b341561040b57fe5b61047a600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061174e565b6040518082815260200191505060405180910390f35b341561049857fe5b6104f1600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080359060200190919050506117d5565b6040518082815260200191505060405180910390f35b341561050f57fe5b61055f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611846565b604051808215151515815260200191505060405180910390f35b341561058157fe5b610614600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611d6e565b005b341561061e57fe5b61066e600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611d73565b6040518082815260200191505060405180910390f35b341561068c57fe5b610694611da8565b005b341561069e57fe5b610731600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611e07565b6040518082815260200191505060405180910390f35b341561074f57fe5b610757611e4d565b60405180806020018281038252838181518152602001915080519060200190808383600083146107a6575b8051825260208311156107a657602082019150602081019050602083039250610782565b505050905090810190601f1680156107d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107e857fe5b6107f0611e7a565b604051808060200182810382528381815181526020019150805190602001908083836000831461083f575b80518252602083111561083f5760208201915060208101905060208303925061081b565b505050905090810190601f16801561086b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561088157fe5b6108d1600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612192565b6040518080602001828103825283818151815260200191508051906020019080838360008314610920575b805182526020831115610920576020820191506020810190506020830392506108fc565b505050905090810190601f16801561094c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561096257fe5b61096a61247d565b60405180806020018281038252838181518152602001915080519060200190808383600083146109b9575b8051825260208311156109b957602082019150602081019050602083039250610995565b505050905090810190601f1680156109e55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156109fb57fe5b610a4b600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506124cc565b6040518082815260200191505060405180910390f35b3415610a6957fe5b610a716125f4565b6040518082815260200191505060405180910390f35b3415610a8f57fe5b610adf600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612602565b604051808215151515815260200191505060405180910390f35b3415610b0157fe5b610b5a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050612b6e565b604051808215151515815260200191505060405180910390f35b3415610b7c57fe5b610bd5600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050613063565b6040518082815260200191505060405180910390f35b3415610bf357fe5b610c4c600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919080359060200190919050506130d0565b6040518080602001828103825283818151815260200191508051906020019080838360008314610c9b575b805182526020831115610c9b57602082019150602081019050602083039250610c77565b505050905090810190601f168015610cc75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600060015490505b90565b600060006000835191506020821115610cf857602091505b60009250600090505b6020811015610db25781811015610d9e578381815181101515610d2057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff166101008402019250610da6565b610100830292505b5b806001019050610d01565b5b5050919050565b610dc26164fd565b60006000604060405190810160405280601181526020017f7b22726574223a302c2264617461223a7b0000000000000000000000000000008152509250610e97610e50604060405190810160405280600581526020017f746f74616c0000000000000000000000000000000000000000000000000000008152506003805490506134e490919063ffffffff16565b604060405190810160405280600a81526020017f2c226974656d73223a5b000000000000000000000000000000000000000000008152508561385e9092919063ffffffff16565b925060009150600090505b6003805490508110156111c55760006001811115610ebc57fe5b6002600383815481101515610ecd57fe5b906000526020600020900160005b506040518082805460018160011615610100020316600290048015610f375780601f10610f15576101008083540402835291820191610f37565b820191906000526020600020905b815481529060010190602001808311610f23575b5050915050908152602001604051809103902060090160009054906101000a900460ff166001811115610f6657fe5b141580156110ac57506110ab846002600384815481101515610f8457fe5b906000526020600020900160005b506040518082805460018160011615610100020316600290048015610fee5780601f10610fcc576101008083540402835291820191610fee565b820191906000526020600020905b815481529060010190602001808311610fda575b505091505090815260200160405180910390206006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110985780601f1061106d57610100808354040283529160200191611098565b820191906000526020600020905b81548152906001019060200180831161107b57829003601f168201915b50505050506138fe90919063ffffffff16565b5b156111b757600082111561110657611103604060405190810160405280600181526020017f2c0000000000000000000000000000000000000000000000000000000000000081525084613a4290919063ffffffff16565b92505b6001820191506111b46111a5600260038481548110151561112357fe5b906000526020600020900160005b50604051808280546001816001161561010002031660029004801561118d5780601f1061116b57610100808354040283529182019161118d565b820191906000526020600020905b815481529060010190602001808311611179575b50509150509081526020016040518091039020613aad565b84613a4290919063ffffffff16565b92505b5b8080600101915050610ea2565b61120e604060405190810160405280600381526020017f5d7d7d000000000000000000000000000000000000000000000000000000000081525084613a4290919063ffffffff16565b92505b5050919050565b600060006000600181111561122957fe5b6002846040518082805190602001908083835b6020831061125f578051825260208201915060208101905060208303925061123c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060090160009054906101000a900460ff1660018111156112ae57fe5b141561138257600460058111156112c157fe5b600181905550611306604060405190810160405280601881526020017f64656c65746520736572766572206e6f74206578697374730000000000000000815250611d73565b507f6f52e1083ea2b4deef2cb48dbb504881c8b27cfedc2d85bc841b9ed1613c54cc6001546040518082815260200180602001828103825260188152602001807f64656c65746520736572766572206e6f742065786973747300000000000000008152506020019250505060405180910390a1600191506116d2565b600460006113909190616511565b600090505b6003805490508110156114e75761146b836003838154811015156113b557fe5b906000526020600020900160005b508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114585780601f1061142d57610100808354040283529160200191611458565b820191906000526020600020905b81548152906001019060200180831161143b57829003601f168201915b50505050506138fe90919063ffffffff16565b15611475576114dc565b600480548060010182816114899190616533565b916000526020600020900160005b6003848154811015156114a657fe5b906000526020600020900160005b50909190915090805460018160011615610100020316600290046114d992919061655f565b50505b806001019050611395565b600360006114f59190616511565b600090505b600480549050811015611579576003805480600101828161151b9190616533565b916000526020600020900160005b60048481548110151561153857fe5b906000526020600020900160005b509091909150908054600181600116156101000203166002900461156b92919061655f565b50505b8060010190506114fa565b60006002846040518082805190602001908083835b602083106115b1578051825260208201915060208101905060208303925061158e565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060090160006101000a81548160ff0219169083600181111561160257fe5b02179055506000600581111561161457fe5b60018190555061165a604060405190810160405280601b81526020017f64656c6574652073657276657220737563636573732c2069643a20000000000081525084611e07565b507f6f52e1083ea2b4deef2cb48dbb504881c8b27cfedc2d85bc841b9ed1613c54cc6001546040518082815260200180602001828103825260158152602001807f64656c65746520736572766572207375636365737300000000000000000000008152506020019250505060405180910390a1600191505b50919050565b60006116e26164fd565b6020604051908101604052806000815250905061170a85858361385e9092919063ffffffff16565b905061171583610ce0565b6001026000191661172582610ce0565b60010260405180826000191660001916815260200191505060405180910390a15b509392505050565b60006117586164fd565b6020604051908101604052806000815250905061179e8461178e8573ffffffffffffffffffffffffffffffffffffffff166143e5565b8361385e9092919063ffffffff16565b90506117a981610ce0565b60010260405180826000191660001916815260200191505060405180910390a0600091505b5092915050565b60006117df6164fd565b6020604051908101604052806000815250905061180f846117ff856145f3565b8361385e9092919063ffffffff16565b905061181a81610ce0565b60010260405180826000191660001916815260200191505060405180910390a0600091505b5092915050565b600061185260056147d2565b61186682600561491090919063ffffffff16565b151561193a576001600581111561187957fe5b6001819055506118be604060405190810160405280600d81526020017f6261642066696c65206a736f6e00000000000000000000000000000000000000815250611d73565b507f6f52e1083ea2b4deef2cb48dbb504881c8b27cfedc2d85bc841b9ed1613c54cc60015460405180828152602001806020018281038252600d8152602001807f6261642066696c65206a736f6e000000000000000000000000000000000000008152506020019250505060405180910390a160009050611d69565b6000600181111561194757fe5b6002600560000160405180828054600181600116156101000203166002900480156119a95780601f106119875761010080835404028352918201916119a9565b820191906000526020600020905b815481529060010190602001808311611995575b5050915050908152602001604051809103902060090160009054906101000a900460ff1660018111156119d857fe5b1415611aac57600460058111156119eb57fe5b600181905550611a30604060405190810160405280601681526020017f7570646174652066696c65206e6f742065786973747300000000000000000000815250611d73565b507f6f52e1083ea2b4deef2cb48dbb504881c8b27cfedc2d85bc841b9ed1613c54cc6001546040518082815260200180602001828103825260168152602001807f7570646174652066696c65206e6f7420657869737473000000000000000000008152506020019250505060405180910390a160009050611d69565b6001600560090160006101000a81548160ff02191690836001811115611ace57fe5b02179055506103e842026005600301819055506005600260056000016040518082805460018160011615610100020316600290048015611b455780601f10611b23576101008083540402835291820191611b45565b820191906000526020600020905b815481529060010190602001808311611b31575b5050915050908152602001604051809103902060008201816000019080546001816001161561010002031660029004611b7f9291906165e6565b5060018201816001019080546001816001161561010002031660029004611ba79291906165e6565b50600282015481600201556003820154816003015560048201816004019080546001816001161561010002031660029004611be39291906165e6565b5060058201816005019080546001816001161561010002031660029004611c0b9291906165e6565b5060068201816006019080546001816001161561010002031660029004611c339291906165e6565b5060078201816007019080546001816001161561010002031660029004611c5b9291906165e6565b50600882015481600801556009820160009054906101000a900460ff168160090160006101000a81548160ff02191690836001811115611c9757fe5b021790555090505060006005811115611cac57fe5b600181905550611cf1604060405190810160405280601381526020017f7570646174652066696c65207375636365737300000000000000000000000000815250611d73565b507f6f52e1083ea2b4deef2cb48dbb504881c8b27cfedc2d85bc841b9ed1613c54cc6001546040518082815260200180602001828103825260138152602001807f7570646174652066696c652073756363657373000000000000000000000000008152506020019250505060405180910390a1600190505b919050565b5b5050565b6000611d7e82610ce0565b60010260405180826000191660001916815260200191505060405180910390a0600090505b919050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e0457611e05565b5b565b6000611e1282610ce0565b60010260001916611e2284610ce0565b60010260405180826000191660001916815260200191505060405180910390a1600090505b92915050565b611e556164fd565b611e743373ffffffffffffffffffffffffffffffffffffffff16614c38565b90505b90565b611e826164fd565b60006000604060405190810160405280601181526020017f7b22726574223a302c2264617461223a7b0000000000000000000000000000008152509250611f57611f10604060405190810160405280600581526020017f746f74616c0000000000000000000000000000000000000000000000000000008152506003805490506134e490919063ffffffff16565b604060405190810160405280600a81526020017f2c226974656d73223a5b000000000000000000000000000000000000000000008152508561385e9092919063ffffffff16565b925060009150600090505b6003805490508110156121415760006001811115611f7c57fe5b6002600383815481101515611f8d57fe5b906000526020600020900160005b506040518082805460018160011615610100020316600290048015611ff75780601f10611fd5576101008083540402835291820191611ff7565b820191906000526020600020905b815481529060010190602001808311611fe3575b5050915050908152602001604051809103902060090160009054906101000a900460ff16600181111561202657fe5b1415156121335760008211156120825761207f604060405190810160405280600181526020017f2c0000000000000000000000000000000000000000000000000000000000000081525084613a4290919063ffffffff16565b92505b600182019150612130612121600260038481548110151561209f57fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156121095780601f106120e7576101008083540402835291820191612109565b820191906000526020600020905b8154815290600101906020018083116120f5575b50509150509081526020016040518091039020613aad565b84613a4290919063ffffffff16565b92505b5b8080600101915050611f62565b61218a604060405190810160405280600381526020017f5d7d7d000000000000000000000000000000000000000000000000000000000081525084613a4290919063ffffffff16565b92505b505090565b61219a6164fd565b6000604060405190810160405280601181526020017f7b22726574223a302c2264617461223a7b000000000000000000000000000000815250915060009050600060018111156121e657fe5b6002846040518082805190602001908083835b6020831061221c57805182526020820191506020810190506020830392506121f9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060090160009054906101000a900460ff16600181111561226b57fe5b14151561239557600190506123096122c2604060405190810160405280600581526020017f746f74616c000000000000000000000000000000000000000000000000000000815250836134e490919063ffffffff16565b604060405190810160405280600a81526020017f2c226974656d73223a5b000000000000000000000000000000000000000000008152508461385e9092919063ffffffff16565b915061238e61237f6002856040518082805190602001908083835b602083106123475780518252602082019150602081019050602083039250612324565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020613aad565b83613a4290919063ffffffff16565b915061242b565b6124286123e1604060405190810160405280600581526020017f746f74616c000000000000000000000000000000000000000000000000000000815250836134e490919063ffffffff16565b604060405190810160405280600a81526020017f2c226974656d73223a5b000000000000000000000000000000000000000000008152508461385e9092919063ffffffff16565b91505b612474604060405190810160405280600381526020017f5d7d7d000000000000000000000000000000000000000000000000000000000081525083613a4290919063ffffffff16565b91505b50919050565b6124856164fd565b6124c6600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614c38565b90505b90565b6000600060018111156124db57fe5b6002836040518082805190602001908083835b6020831061251157805182526020820191506020810190506020830392506124ee565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060090160009054906101000a900460ff16600181111561256057fe5b141580156125db575060006002836040518082805190602001908083835b602083106125a1578051825260208201915060208101905060208303925061257e565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206008015414155b156125e957600190506125ee565b600090505b5b919050565b600060038054905090505b90565b600061261882600561491090919063ffffffff16565b15156126ec576001600581111561262b57fe5b600181905550612670604060405190810160405280601181526020017f62616420736572766572206a736f6e2021000000000000000000000000000000815250611d73565b507f6f52e1083ea2b4deef2cb48dbb504881c8b27cfedc2d85bc841b9ed1613c54cc60015460405180828152602001806020018281038252600f8152602001807f62616420736572766572206a736f6e00000000000000000000000000000000008152506020019250505060405180910390a160009050612b69565b600060018111156126f957fe5b60026005600001604051808280546001816001161561010002031660029004801561275b5780601f1061273957610100808354040283529182019161275b565b820191906000526020600020905b815481529060010190602001808311612747575b5050915050908152602001604051809103902060090160009054906101000a900460ff16600181111561278a57fe5b14151561285f576004600581111561279e57fe5b6001819055506127e3604060405190810160405280601b81526020017f7468652073657276657220616c72656164792065786973747320210000000000815250611d73565b507f6f52e1083ea2b4deef2cb48dbb504881c8b27cfedc2d85bc841b9ed1613c54cc6001546040518082815260200180602001828103825260198152602001807f7468652073657276657220616c726561647920657869737473000000000000008152506020019250505060405180910390a160009050612b69565b6001600560090160006101000a81548160ff0219169083600181111561288157fe5b02179055506103e84202600560030181905550600380548060010182816128a89190616533565b916000526020600020900160005b6005600001909190915090805460018160011615610100020316600290046128df92919061655f565b505060056002600560000160405180828054600181600116156101000203166002900480156129455780601f10612923576101008083540402835291820191612945565b820191906000526020600020905b815481529060010190602001808311612931575b505091505090815260200160405180910390206000820181600001908054600181600116156101000203166002900461297f9291906165e6565b50600182018160010190805460018160011615610100020316600290046129a79291906165e6565b506002820154816002015560038201548160030155600482018160040190805460018160011615610100020316600290046129e39291906165e6565b5060058201816005019080546001816001161561010002031660029004612a0b9291906165e6565b5060068201816006019080546001816001161561010002031660029004612a339291906165e6565b5060078201816007019080546001816001161561010002031660029004612a5b9291906165e6565b50600882015481600801556009820160009054906101000a900460ff168160090160006101000a81548160ff02191690836001811115612a9757fe5b021790555090505060006005811115612aac57fe5b600181905550612af1604060405190810160405280601781526020017f696e736572742073657276657220737563636573732021000000000000000000815250611d73565b507f6f52e1083ea2b4deef2cb48dbb504881c8b27cfedc2d85bc841b9ed1613c54cc6001546040518082815260200180602001828103825260158152602001807f696e7365727420736572766572207375636365737300000000000000000000008152506020019250505060405180910390a1600190505b919050565b60006000600090505b600380549050811015612f6d57612cc0846002600384815481101515612b9957fe5b906000526020600020900160005b506040518082805460018160011615610100020316600290048015612c035780601f10612be1576101008083540402835291820191612c03565b820191906000526020600020905b815481529060010190602001808311612bef575b505091505090815260200160405180910390206000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cad5780601f10612c8257610100808354040283529160200191612cad565b820191906000526020600020905b815481529060010190602001808311612c9057829003601f168201915b50505050506138fe90919063ffffffff16565b8015612d5c575060006001811115612cd457fe5b6002856040518082805190602001908083835b60208310612d0a5780518252602082019150602081019050602083039250612ce7565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060090160009054906101000a900460ff166001811115612d5957fe5b14155b15612f5f57826002856040518082805190602001908083835b60208310612d985780518252602082019150602081019050602083039250612d75565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801819055506000831415612e5857612e52604060405190810160405280601481526020017f64697361626c6520746865207365727665723a2000000000000000000000000081525085604060405190810160405280601181526020017f46696c655365727665724d616e616765720000000000000000000000000000008152506116d8565b50612ed1565b612ecf604060405190810160405280601381526020017f656e61626c6520746865207365727665723a200000000000000000000000000081525085604060405190810160405280601181526020017f46696c655365727665724d616e616765720000000000000000000000000000008152506116d8565b505b60006005811115612ede57fe5b6001819055507f6f52e1083ea2b4deef2cb48dbb504881c8b27cfedc2d85bc841b9ed1613c54cc6001546040518082815260200180602001828103825260158152602001807f656e61626c6520736572766572207375636365737300000000000000000000008152506020019250505060405180910390a16001915061305c565b5b8080600101915050612b77565b612fe4604060405190810160405280601481526020017f656e61626c6520736572766572206661696c2c2000000000000000000000000081525085604060405190810160405280601181526020017f46696c655365727665724d616e616765720000000000000000000000000000008152506116d8565b507f6f52e1083ea2b4deef2cb48dbb504881c8b27cfedc2d85bc841b9ed1613c54cc6001546040518082815260200180602001828103825260128152602001807f656e61626c6520736572766572206661696c00000000000000000000000000008152506020019250505060405180910390a1600091505b5092915050565b600061306d6164fd565b6020604051908101604052806000815250905061309d8461308d85614e4a565b8361385e9092919063ffffffff16565b90506130a881610ce0565b60010260405180826000191660001916815260200191505060405180910390a05b5092915050565b6130d86164fd565b6000600090505b6003805490508110156134c957600060018111156130f957fe5b600260038381548110151561310a57fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156131745780601f10613152576101008083540402835291820191613174565b820191906000526020600020905b815481529060010190602001808311613160575b5050915050908152602001604051809103902060090160009054906101000a900460ff1660018111156131a357fe5b141580156132e957506132e88460026003848154811015156131c157fe5b906000526020600020900160005b50604051808280546001816001161561010002031660029004801561322b5780601f1061320957610100808354040283529182019161322b565b820191906000526020600020905b815481529060010190602001808311613217575b505091505090815260200160405180910390206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156132d55780601f106132aa576101008083540402835291602001916132d5565b820191906000526020600020905b8154815290600101906020018083116132b857829003601f168201915b50505050506138fe90919063ffffffff16565b5b8015613385575082600260038381548110151561330257fe5b906000526020600020900160005b50604051808280546001816001161561010002031660029004801561336c5780601f1061334a57610100808354040283529182019161336c565b820191906000526020600020905b815481529060010190602001808311613358575b5050915050908152602001604051809103902060020154145b156134bb57600260038281548110151561339b57fe5b906000526020600020900160005b5060405180828054600181600116156101000203166002900480156134055780601f106133e3576101008083540402835291820191613405565b820191906000526020600020905b8154815290600101906020018083116133f1575b505091505090815260200160405180910390206000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156134af5780601f10613484576101008083540402835291602001916134af565b820191906000526020600020905b81548152906001019060200180831161349257829003601f168201915b505050505091506134dd565b5b80806001019150506130df565b602060405190810160405280600081525091505b5092915050565b6134ec6164fd565b600060006000600060038651019350600087141561350f57600184019350613539565b8692505b600083111561353857600a8381151561352857fe5b0492508380600101945050613513565b5b836040518059106135475750595b908082528060200260200182016040525b509450600091507f2200000000000000000000000000000000000000000000000000000000000000858380600101945081518110151561359457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600090505b855181101561367d5785818151811015156135e057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002858380600101945081518110151561363f57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b80806001019150506135c9565b7f220000000000000000000000000000000000000000000000000000000000000085838060010194508151811015156136b257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f3a00000000000000000000000000000000000000000000000000000000000000858380600101945081518110151561371757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060018403915060008714156137bd5760307f010000000000000000000000000000000000000000000000000000000000000002858381518110151561378857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350613853565b5b6000871115613852576030600a888115156137d557fe5b06017f01000000000000000000000000000000000000000000000000000000000000000285838060019003945081518110151561380e57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8781151561384a57fe5b0496506137be565b5b5b5050505092915050565b6138666164fd565b60006000600060006000865188518a5101016040518059106138855750595b908082528060200260200182016040525b509550602089019450602088019350602087019250602086019150600090506138c3818301868b51614f98565b8851810190506138d7818301858a51614f98565b8751810190506138eb818301848951614f98565b8651810190505b50505050509392505050565b60006000825184511415156139165760009150613a3b565b600090505b8351811015613a3657828181518110151561393257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684828151811015156139ad57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515613a2a5760009150613a3b565b5b80600101905061391b565b600191505b5092915050565b613a4a6164fd565b6000600060008451865101604051805910613a625750595b908082528060200260200182016040525b509350602086019250602085019150602084019050613a9481848851614f98565b613aa386518201838751614f98565b5b50505092915050565b613ab56164fd565b604060405190810160405280600181526020017f7b000000000000000000000000000000000000000000000000000000000000008152509050613c1d613bd6604060405190810160405280600281526020017f6964000000000000000000000000000000000000000000000000000000000000815250846000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613bc35780601f10613b9857610100808354040283529160200191613bc3565b820191906000526020600020905b815481529060010190602001808311613ba657829003601f168201915b5050505050614fe590919063ffffffff16565b604060405190810160405280600181526020017f2c000000000000000000000000000000000000000000000000000000000000008152508361385e9092919063ffffffff16565b9050613d4e613d07604060405190810160405280600481526020017f686f737400000000000000000000000000000000000000000000000000000000815250846001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613cf45780601f10613cc957610100808354040283529160200191613cf4565b820191906000526020600020905b815481529060010190602001808311613cd757829003601f168201915b5050505050614fe590919063ffffffff16565b604060405190810160405280600181526020017f2c000000000000000000000000000000000000000000000000000000000000008152508361385e9092919063ffffffff16565b9050613de7613da0604060405190810160405280600481526020017f706f72740000000000000000000000000000000000000000000000000000000081525084600201546134e490919063ffffffff16565b604060405190810160405280600181526020017f2c000000000000000000000000000000000000000000000000000000000000008152508361385e9092919063ffffffff16565b9050613e80613e39604060405190810160405280600a81526020017f75706461746554696d650000000000000000000000000000000000000000000081525084600301546134e490919063ffffffff16565b604060405190810160405280600181526020017f2c000000000000000000000000000000000000000000000000000000000000008152508361385e9092919063ffffffff16565b9050613fb1613f6a604060405190810160405280600881526020017f706f736974696f6e000000000000000000000000000000000000000000000000815250846005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613f575780601f10613f2c57610100808354040283529160200191613f57565b820191906000526020600020905b815481529060010190602001808311613f3a57829003601f168201915b5050505050614fe590919063ffffffff16565b604060405190810160405280600181526020017f2c000000000000000000000000000000000000000000000000000000000000008152508361385e9092919063ffffffff16565b90506140e261409b604060405190810160405280600581526020017f67726f7570000000000000000000000000000000000000000000000000000000815250846006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156140885780601f1061405d57610100808354040283529160200191614088565b820191906000526020600020905b81548152906001019060200180831161406b57829003601f168201915b5050505050614fe590919063ffffffff16565b604060405190810160405280600181526020017f2c000000000000000000000000000000000000000000000000000000000000008152508361385e9092919063ffffffff16565b90506142136141cc604060405190810160405280600c81526020017f6f7267616e697a6174696f6e0000000000000000000000000000000000000000815250846004018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156141b95780601f1061418e576101008083540402835291602001916141b9565b820191906000526020600020905b81548152906001019060200180831161419c57829003601f168201915b5050505050614fe590919063ffffffff16565b604060405190810160405280600181526020017f2c000000000000000000000000000000000000000000000000000000000000008152508361385e9092919063ffffffff16565b90506142ac614265604060405190810160405280600681526020017f656e61626c65000000000000000000000000000000000000000000000000000081525084600801546134e490919063ffffffff16565b604060405190810160405280600181526020017f2c000000000000000000000000000000000000000000000000000000000000008152508361385e9092919063ffffffff16565b90506143dd614396604060405190810160405280600481526020017f696e666f00000000000000000000000000000000000000000000000000000000815250846007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156143835780601f1061435857610100808354040283529160200191614383565b820191906000526020600020905b81548152906001019060200180831161436657829003601f168201915b5050505050614fe590919063ffffffff16565b604060405190810160405280600181526020017f7d000000000000000000000000000000000000000000000000000000000000008152508361385e9092919063ffffffff16565b90505b919050565b6143ed6164fd565b60006000602a6040518059106144005750595b908082528060200260200182016040525b5092507f300000000000000000000000000000000000000000000000000000000000000083600081518110151561444457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008360018151811015156144a457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350602991505b60028260ff161015156145eb57600f841690506010848115156144f857fe5b049350600a8160ff16101561457357603081017f010000000000000000000000000000000000000000000000000000000000000002838360ff1681518110151561453e57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506145de565b6061600a8203017f010000000000000000000000000000000000000000000000000000000000000002838360ff168151811015156145ad57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b5b816001900391506144d9565b5b5050919050565b6145fb6164fd565b60006000600060006000600087141561464c57604060405190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525095506147c8565b86945060019350600092506000871215614673578660000394506000935082806001019350505b8491505b600082111561469c57600a8281151561468c57fe5b0491508280600101935050614677565b8260ff166040518059106146ad5750595b908082528060200260200182016040525b509550831515614729577f2d000000000000000000000000000000000000000000000000000000000000008660008151811015156146f857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b6001830390505b60008511156147c7576030600a8681151561474757fe5b06017f01000000000000000000000000000000000000000000000000000000000000000286828060019003935060ff1681518110151561478357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a858115156147bf57fe5b049450614730565b5b5050505050919050565b60206040519081016040528060008152508160000190805190602001906147fa92919061666d565b50602060405190810160405280600081525081600101908051906020019061482392919061666d565b506000816002018190555060008160030181905550602060405190810160405280600081525081600501908051906020019061486092919061666d565b50602060405190810160405280600081525081600401908051906020019061488992919061666d565b5060206040519081016040528060008152508160070190805190602001906148b292919061666d565b5060206040519081016040528060008152508160060190805190602001906148db92919061666d565b506000816008018190555060008160090160006101000a81548160ff0219169083600181111561490757fe5b02179055505b50565b600061491b836147d2565b614964604060405190810160405280600281526020017f69640000000000000000000000000000000000000000000000000000000000008152508361526090919063ffffffff16565b83600001908051906020019061497b92919061666d565b506149c5604060405190810160405280600481526020017f686f7374000000000000000000000000000000000000000000000000000000008152508361526090919063ffffffff16565b8360010190805190602001906149dc92919061666d565b50614a26604060405190810160405280600481526020017f706f727400000000000000000000000000000000000000000000000000000000815250836159b090919063ffffffff16565b8360020181905550614a77604060405190810160405280600881526020017f706f736974696f6e0000000000000000000000000000000000000000000000008152508361526090919063ffffffff16565b836005019080519060200190614a8e92919061666d565b50614ad8604060405190810160405280600581526020017f67726f75700000000000000000000000000000000000000000000000000000008152508361526090919063ffffffff16565b836006019080519060200190614aef92919061666d565b50614b39604060405190810160405280600c81526020017f6f7267616e697a6174696f6e00000000000000000000000000000000000000008152508361526090919063ffffffff16565b836004019080519060200190614b5092919061666d565b50614b9a604060405190810160405280600481526020017f696e666f000000000000000000000000000000000000000000000000000000008152508361526090919063ffffffff16565b836007019080519060200190614bb192919061666d565b50614bfb604060405190810160405280600681526020017f656e61626c650000000000000000000000000000000000000000000000000000815250836159b090919063ffffffff16565b83600801819055506000836000018054600181600116156101000203166002900490501415614c2d5760009050614c32565b600190505b92915050565b614c406164fd565b614c486166ed565b60006000600060006028604051805910614c5f5750595b908082528060200260200182016040525b509450600093505b6014841015614e3c578360130360080260020a8773ffffffffffffffffffffffffffffffffffffffff16811515614cab57fe5b047f01000000000000000000000000000000000000000000000000000000000000000292506010837f0100000000000000000000000000000000000000000000000000000000000000900460ff16811515614d0257fe5b047f0100000000000000000000000000000000000000000000000000000000000000029150817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f0100000000000000000000000000000000000000000000000000000000000000029050614da082616259565b8585600202815181101515614db157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350614dea81616259565b8560018660020201815181101515614dfe57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b8380600101945050614c78565b8495505b5050505050919050565b614e526164fd565b6000600060006000851415614e9f57604060405190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509350614f90565b600092508491505b6000821115614ecc57600a82811515614ebc57fe5b0491508280600101935050614ea7565b8260ff16604051805910614edd5750595b908082528060200260200182016040525b5093506001830390505b6000851115614f8f576030600a86811515614f0f57fe5b06017f01000000000000000000000000000000000000000000000000000000000000000284828060019003935060ff16815181101515614f4b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85811515614f8757fe5b049450614ef8565b5b505050919050565b60005b602082101515614fc157825184526020840193506020830192505b602082039150614f9b565b6001826020036101000a039050801983511681855116818117865250505b50505050565b614fed6164fd565b6000600060006000600586518851010160405180591061500a5750595b908082528060200260200182016040525b509450602087019350602086019250602085019150600090507f2200000000000000000000000000000000000000000000000000000000000000858280600101935081518110151561506957fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506150a7818301848851614f98565b8551810190507f220000000000000000000000000000000000000000000000000000000000000085828060010193508151811015156150e257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f3a00000000000000000000000000000000000000000000000000000000000000858280600101935081518110151561514757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f220000000000000000000000000000000000000000000000000000000000000085828060010193508151811015156151ac57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506151ea818301858951614f98565b8651810190507f2200000000000000000000000000000000000000000000000000000000000000858280600101935081518110151561522557fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b5050505092915050565b6152686164fd565b6000600060006000600060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9550600094505b6001156157b95761533861532789604060405190810160405280600181526020017f2200000000000000000000000000000000000000000000000000000000000000815250604060405190810160405280600181526020017f220000000000000000000000000000000000000000000000000000000000000081525061385e9092919063ffffffff16565b868b61634e9092919063ffffffff16565b95507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415615427576153f76153e689604060405190810160405280600181526020017f2700000000000000000000000000000000000000000000000000000000000000815250604060405190810160405280600181526020017f270000000000000000000000000000000000000000000000000000000000000081525061385e9092919063ffffffff16565b868b61634e9092919063ffffffff16565b95507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415615426576159a4565b5b600288510186019550600093505b8851861015615797577f2000000000000000000000000000000000000000000000000000000000000000898781518110151561546d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061557f57507f0900000000000000000000000000000000000000000000000000000000000000898781518110151561551057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061562357507f0d0000000000000000000000000000000000000000000000000000000000000089878151811015156155b457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806156c757507f0a00000000000000000000000000000000000000000000000000000000000000898781518110151561565857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156156d9578580600101965050615792565b7f3a00000000000000000000000000000000000000000000000000000000000000898781518110151561570857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561578c57858060010196505060019350615797565b615797565b5b615435565b88518614156157a5576159a4565b83156157b0576157b9565b8594505b61529c565b60019250615808604060405190810160405280600181526020017f2200000000000000000000000000000000000000000000000000000000000000815250878b61634e9092919063ffffffff16565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156158b15760009250615881604060405190810160405280600181526020017f2700000000000000000000000000000000000000000000000000000000000000815250878b61634e9092919063ffffffff16565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156158b0576159a4565b5b600182019150821561590f57615908604060405190810160405280600181526020017f2200000000000000000000000000000000000000000000000000000000000000815250838b61634e9092919063ffffffff16565b905061595d565b61595a604060405190810160405280600181526020017f2700000000000000000000000000000000000000000000000000000000000000815250838b61634e9092919063ffffffff16565b90505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81141561598a576159a4565b6159a1828383038b6163b89092919063ffffffff16565b96505b50505050505092915050565b6000600060006000600060006000600096507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9550600094505b600115615f0757615a86615a7589604060405190810160405280600181526020017f2200000000000000000000000000000000000000000000000000000000000000815250604060405190810160405280600181526020017f220000000000000000000000000000000000000000000000000000000000000081525061385e9092919063ffffffff16565b868b61634e9092919063ffffffff16565b95507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415615b7557615b45615b3489604060405190810160405280600181526020017f2700000000000000000000000000000000000000000000000000000000000000815250604060405190810160405280600181526020017f270000000000000000000000000000000000000000000000000000000000000081525061385e9092919063ffffffff16565b868b61634e9092919063ffffffff16565b95507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415615b745761624d565b5b600288510186019550600093505b8851861015615ee5577f20000000000000000000000000000000000000000000000000000000000000008987815181101515615bbb57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480615ccd57507f09000000000000000000000000000000000000000000000000000000000000008987815181101515615c5e57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80615d7157507f0d000000000000000000000000000000000000000000000000000000000000008987815181101515615d0257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80615e1557507f0a000000000000000000000000000000000000000000000000000000000000008987815181101515615da657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15615e27578580600101965050615ee0565b7f3a000000000000000000000000000000000000000000000000000000000000008987815181101515615e5657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415615eda57858060010196505060019350615ee5565b615ee5565b5b615b83565b8851861415615ef35761624d565b8315615efe57615f07565b8594505b6159ea565b8592505b8851831015616004578883815181101515615f2257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004915060208260ff161480615fa7575060098260ff16145b80615fb55750600d8260ff16145b80615fc35750600a8260ff16145b80615fd15750603a8260ff16145b80615fdf575060228260ff16145b80615fed575060278260ff16145b1515615ff857616004565b5b826001019250615f0b565b600190507f2b00000000000000000000000000000000000000000000000000000000000000898481518110151561603757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156160bb5760019050828060010193505061616b565b7f2d0000000000000000000000000000000000000000000000000000000000000089848151811015156160ea57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561616a576000905082806001019350505b5b5b885183101561623e57888381518110151561618357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004915060308260ff161015801561620b575060398260ff1611155b15156162245780151561621f578660000396505b61624d565b6030820360ff16600a88020196505b82600101925061616c565b80151561624c578660000396505b5b50505050505092915050565b6000600a7f010000000000000000000000000000000000000000000000000000000000000002827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191610156162f8576030827f01000000000000000000000000000000000000000000000000000000000000009004017f0100000000000000000000000000000000000000000000000000000000000000029050616349565b6057827f01000000000000000000000000000000000000000000000000000000000000009004017f0100000000000000000000000000000000000000000000000000000000000000029050616349565b5b919050565b6000600060006000602087019250602086019150826163758689510387860189518661643d565b0390508651811015616389578093506163ad565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93505b5b5050509392505050565b6163c06164fd565b60006000848651038411156163d6578486510393505b6000841115156163f85760206040519081016040528060008152509250616434565b836040518059106164065750595b908082528060200260200182016040525b5092506020860191506020830190506164338186840186614f98565b5b50509392505050565b6000600060006000600088871115156164eb576020871115156164a05760018760200360080260020a031980875116888b038a018a96505b81838851161461649557600187019650806001880310616475578b8b0196505b5050508394506164f1565b8686209150879350600092505b868903831115156164e95786842090508060001916826000191614156164d5578394506164f1565b6001840193505b82806001019350506164ad565b5b5b88880194505b50505050949350505050565b602060405190810160405280600081525090565b508054600082559060005260206000209081019061652f9190616701565b5b50565b81548183558181151161655a578183600052602060002091820191016165599190616701565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061659857805485556165d5565b828001600101855582156165d557600052602060002091601f016020900482015b828111156165d45782548255916001019190600101906165b9565b5b5090506165e2919061672d565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061661f578054855561665c565b8280016001018555821561665c57600052602060002091601f016020900482015b8281111561665b578254825591600101919060010190616640565b5b509050616669919061672d565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106166ae57805160ff19168380011785556166dc565b828001600101855582156166dc579182015b828111156166db5782518255916020019190600101906166c0565b5b5090506166e9919061672d565b5090565b602060405190810160405280600081525090565b61672a91905b80821115616726576000818161671d9190616752565b50600101616707565b5090565b90565b61674f91905b8082111561674b576000816000905550600101616733565b5090565b90565b50805460018160011615610100020316600290046000825580601f106167785750616797565b601f016020900490600052602060002090810190616796919061672d565b5b505600a165627a7a723058200c99de41b038d68e92d92a22df9a5fddd027322eabd57e1c9c50cc832f9eee6e0029";

    private FileServerManager(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    private FileServerManager(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public List<NotifyEventResponse> getNotifyEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("Notify", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}));
        List<EventValues> valueList = extractEventParameters(event,transactionReceipt);
        ArrayList<NotifyEventResponse> responses = new ArrayList<NotifyEventResponse>(valueList.size());
        for(EventValues eventValues : valueList) {
            NotifyEventResponse typedResponse = new NotifyEventResponse();
            typedResponse._errno = (Uint256)eventValues.getNonIndexedValues().get(0);
            typedResponse._info = (Utf8String)eventValues.getNonIndexedValues().get(1);
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<NotifyEventResponse> notifyEventObservable() {
        final Event event = new Event("Notify", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}));
        EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST,DefaultBlockParameterName.LATEST, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, NotifyEventResponse>() {
            @Override
            public NotifyEventResponse call(Log log) {
                EventValues eventValues = extractEventParameters(event, log);
                NotifyEventResponse typedResponse = new NotifyEventResponse();
                typedResponse._errno = (Uint256)eventValues.getNonIndexedValues().get(0);
                typedResponse._info = (Utf8String)eventValues.getNonIndexedValues().get(1);
                return typedResponse;
            }
        });
    }

    public Future<Uint256> getErrno() {
        Function function = new Function("getErrno", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Uint256> stringToUint(Utf8String _str) {
        Function function = new Function("stringToUint", 
                Arrays.<Type>asList(_str), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Utf8String> listByGroup(Utf8String _group) {
        Function function = new Function("listByGroup", 
                Arrays.<Type>asList(_group), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<TransactionReceipt> deleteById(Utf8String _serverId) {
        Function function = new Function("deleteById", Arrays.<Type>asList(_serverId), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public Future<Uint256> log(Utf8String _str, Utf8String _str2, Utf8String _topic) {
        Function function = new Function("log", 
                Arrays.<Type>asList(_str, _str2, _topic), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Uint256> log(Utf8String _str, Address _addr) {
        Function function = new Function("log", 
                Arrays.<Type>asList(_str, _addr), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Uint256> log(Utf8String _str, Int256 _i) {
        Function function = new Function("log", 
                Arrays.<Type>asList(_str, _i), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<TransactionReceipt> update(Utf8String _json) {
        Function function = new Function("update", Arrays.<Type>asList(_json), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public Future<TransactionReceipt> register(Utf8String _name, Utf8String _version) {
        Function function = new Function("register", Arrays.<Type>asList(_name, _version), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public Future<Uint256> log(Utf8String _str) {
        Function function = new Function("log", 
                Arrays.<Type>asList(_str), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<TransactionReceipt> kill() {
        Function function = new Function("kill", Arrays.<Type>asList(), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public Future<Uint256> log(Utf8String _str, Utf8String _topic) {
        Function function = new Function("log", 
                Arrays.<Type>asList(_str, _topic), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Utf8String> getSender() {
        Function function = new Function("getSender", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Utf8String> listAll() {
        Function function = new Function("listAll", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Utf8String> find(Utf8String _serverId) {
        Function function = new Function("find", 
                Arrays.<Type>asList(_serverId), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Utf8String> getOwner() {
        Function function = new Function("getOwner", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Uint256> isServerEnable(Utf8String _serverId) {
        Function function = new Function("isServerEnable", 
                Arrays.<Type>asList(_serverId), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Uint256> getCount() {
        Function function = new Function("getCount", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<TransactionReceipt> insert(Utf8String _json) {
        Function function = new Function("insert", Arrays.<Type>asList(_json), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public Future<TransactionReceipt> enable(Utf8String _serverId, Uint256 _enable) {
        Function function = new Function("enable", Arrays.<Type>asList(_serverId, _enable), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public Future<Uint256> log(Utf8String _str, Uint256 _ui) {
        Function function = new Function("log", 
                Arrays.<Type>asList(_str, _ui), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Utf8String> findIdByHostPort(Utf8String _host, Uint256 _port) {
        Function function = new Function("findIdByHostPort", 
                Arrays.<Type>asList(_host, _port), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public static Future<FileServerManager> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit, BigInteger initialValue) {
        return deployAsync(FileServerManager.class, web3j, credentials, gasPrice, gasLimit, BINARY, "", initialValue);
    }

    public static Future<FileServerManager> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit, BigInteger initialValue) {
        return deployAsync(FileServerManager.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "", initialValue);
    }

    public static FileServerManager load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new FileServerManager(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    public static FileServerManager load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new FileServerManager(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static class NotifyEventResponse {
        public Uint256 _errno;

        public Utf8String _info;
    }
}
